import { defineComponent, h, resolveDirective, withDirectives } from 'vue'

/** 封装@vueuse/motion动画库中的自定义指令v-motion */
export default defineComponent({
  name: 'Motion',
  props: {
    delay: {
      type: Number,
      default: 50
    }
  },
  render() {
    const { delay } = this
    const motion = resolveDirective('motion')
    return withDirectives(h('div', {}, { default: () => [this.$slots.default()] }), [
      [
        motion,
        {
          initial: { opacity: 0, y: 100 },
          enter: {
            opacity: 1,
            y: 0,
            transition: { delay }
          }
        }
      ]
    ])
  }
})
